/* 格式化日期 */
export function formatDate(date, fmt) {
    // 检查 date 是否是有效的 Date 对象
    if (!(date instanceof Date)) {
        console.error("Invalid date object:", date);
        return '';  // 如果 date 无效，返回空字符串或处理错误
    }

    // 检查 fmt 是否有效
    if (typeof fmt !== 'string' || fmt.trim() === '') {
        console.error("Invalid format string:", fmt);
        return '';  // 如果 fmt 无效，返回空字符串或处理错误
    }

    // 处理年份部分
    const yearMatch = /(y+)/.exec(fmt);
    if (yearMatch) {
        fmt = fmt.replace(yearMatch[0], (date.getFullYear() + '').slice(4 - yearMatch[0].length));
    }
    
    // 处理其他日期部分
    let o = {
        'M+': date.getMonth() + 1,  // 月份是从0开始的，所以需要加1
        'd+': date.getDate(),
        'h+': date.getHours(),
        'm+': date.getMinutes(),
        's+': date.getSeconds()
    };

    // 对fmt进行替换
    for (let k in o) {
        const match = new RegExp(`(${k})`).exec(fmt);
        if (match) {
            let str = o[k] + '';
            // 如果匹配到的长度是1，直接替换；否则填充0
            fmt = fmt.replace(match[0], (match[0].length === 1) ? str : padLeftZero(str));
        }
    }

    return fmt;
};

// 左侧填充0
function padLeftZero(str) {
    return ('00' + str).slice(str.length);
}
